package chapter9.section9;

//程序9-12c  动态执行方法
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class DynaMethodDemo {
	public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException,
			IllegalArgumentException, IllegalAccessException, InvocationTargetException {
//要动态加载的类名，如果类在某个包下，需要加上此类完整的包的限定
		String clssName = "chap9.session9.StudentFactory";
		Class factory = Class.forName(clssName);
		String methodName = "createStudent";// 要动态执行的方法名
		String paraValue1 = "李燕";// 执行方法时传递的实参1
		int paraValue2 = 22;// 执行方法时传递的实参2
		// 根据方法名和参数类型，在类实例factory中获得对应的方法
		Method m = factory.getDeclaredMethod(methodName, String.class, int.class);
		if (m != null) {// 如果找到这样的方法，执行
			Student stu = (Student) m.invoke(null, paraValue1, paraValue2);
			System.out.println(stu);
		}
	}
}
